bitkeeper revision 1.1340.1.2 (4267e33asTxlaqmSE5FbomPUak_0JQ)
authormaf46@burn.cl.cam.ac.uk <maf46@burn.cl.cam.ac.uk>
Thu, 21 Apr 2005 17:30:34 +0000 (17:30 +0000)
committermaf46@burn.cl.cam.ac.uk <maf46@burn.cl.cam.ac.uk>
Thu, 21 Apr 2005 17:30:34 +0000 (17:30 +0000)
Shadow mode should (for now) *not* set the _PAGE_GLOBAL mode in any of the shadow page tables.

Signed-off-by: michael.fetterman@cl.cam.ac.uk
xen/include/asm-x86/shadow.h

index 0ce0834f2aff5eb8b4d7d7dba1c97bb6e604c6cb..fce84aac5ad319fb835ffd89e9ef0d17e5dadf7a 100644 (file)
@@ -590,7 +590,7 @@ static inline int l1pte_write_fault(
 
     ASSERT(l1e_get_flags(gpte) & _PAGE_RW);
     l1e_add_flags(&gpte, _PAGE_DIRTY | _PAGE_ACCESSED);
-    spte = l1e_create_pfn(gmfn, l1e_get_flags(gpte));
+    spte = l1e_create_pfn(gmfn, l1e_get_flags(gpte) & ~_PAGE_GLOBAL);
 
     SH_VVLOG("l1pte_write_fault: updating spte=0x%p gpte=0x%p",
              l1e_get_value(spte), l1e_get_value(gpte));
@@ -623,7 +623,7 @@ static inline int l1pte_read_fault(
     }
 
     l1e_add_flags(&gpte, _PAGE_ACCESSED);
-    spte = l1e_create_pfn(mfn, l1e_get_flags(gpte));
+    spte = l1e_create_pfn(mfn, l1e_get_flags(gpte) & ~_PAGE_GLOBAL);
 
     if ( shadow_mode_log_dirty(d) || !(l1e_get_flags(gpte) & _PAGE_DIRTY) ||
          mfn_is_page_table(mfn) )
@@ -651,7 +651,7 @@ static inline void l1pte_propagate_from_guest(
           (_PAGE_PRESENT|_PAGE_ACCESSED)) &&
          VALID_MFN(mfn = __gpfn_to_mfn(d, l1e_get_pfn(gpte))) )
     {
-        spte = l1e_create_pfn(mfn, l1e_get_flags(gpte));
+        spte = l1e_create_pfn(mfn, l1e_get_flags(gpte) & ~_PAGE_GLOBAL);
         
         if ( shadow_mode_log_dirty(d) ||
              !(l1e_get_flags(gpte) & _PAGE_DIRTY) ||